
/**
 * 响应拦截
 * @param {Object} http 
 */
module.exports = (vm) => {
    uni.$u.http.interceptors.response.use((response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/
        const data = response.data
        // 自定义参数
        const custom = response.config?.custom
		
		if (data.errno===undefined){			//出现异常错误
			uni.hideLoading()
			uni.showModal({
				title: '异常提醒',
				content: '请求页面出现未知错误，请联系技术人员排查问题',
				showCancel:false,
				success: function (res) {}
			});
			return {}
		}else{
			if (data.errno !== 0) { // 服务端返回的状态码不等于0，则reject()
				//重新登录
				if(data.errno === 41009){
					uni.showModal({
						cancelText: "取消", // 取消按钮的文字  
						confirmText: "确认", // 确认按钮文字 
						title: '登录提示',
						content: '您未登录，是否跳转登录页面?',
						success: res => {
							if (res.confirm) {
								//防止部分页面打开弹出加载窗口
								uni.$c.toLogin();
							}
						}
					});
				//资料审核，联系客服
				}else if(data.errno === 10001){
					let phone_number = data.data.phone_number
					uni.showModal({
						cancelText: "取消", // 取消按钮的文字  
						confirmText: "联系客服", // 确认按钮文字 
						title: '温馨提示',
						content: data.msg,
						success: res => {
							if (res.confirm) {
								uni.makePhoneCall({
									phoneNumber: phone_number
								})
							}
						}
					});
				}else{
					// 如果没有显式定义custom的toast参数为false的话，默认对报错进行toast弹出提示
					if (custom.toast && data.msg!=undefined && data.msg!=null && data.msg!='') {
						uni.$u.toast(data.msg,3000)
					}
				}
			
				// 如果需要catch返回，则进行reject
				if (custom?.catch) {
					return Promise.reject(data)
				} else {
					// 否则返回一个pending中的promise
					return new Promise(() => {})
				}
			}
			return data || {}
		}
    }, (response) => { /*  对响应错误做点什么 （statusCode != 200）*/
        return Promise.reject(response)
    })
}